package br.odb.bzk3.android;

import br.odb.libscene.Mesh;
import br.odb.libscene.Sector;
import br.odb.utils.math.Vec3;
/**
 * 
 * @author daniel
 */
public class GameSector extends Sector {
	int VisibleFaces;
	public boolean visited;
	public int dist;
	Mesh[] iCache;
	public Square[] iFaces;

	// ------------------------------------------------------------------------------------------------------------
	public GameSector(float i, float i0, float i1, float i2, float i3, float i4) {
		super( i, i0, i1, i2, i3, i4 );

		VisibleFaces = 0;
		iFaces = new Square[6];
	}
	// ------------------------------------------------------------------------------------------------------------
	public void setLinks(int l0, int l1, int l2, int l3, int l4, int l5) {
		super.setLinks( l0, l1, l2, l3, l4, l5 );

		for (int c = 0; c < 6; c++)
			if ( getLink(c) != 0)
				VisibleFaces++;
	}

	@Override
	public void setColor(int i, int i0, int i1, int i2, boolean fakeShading) {	
		super.setColor(i, i0, i1, i2, true );
	}
	
	// ------------------------------------------------------------------------------------------------------------
	public void setLink(int s, int i0) {
		super.setLink( s, i0 );
		
		if (i0 == 0)
			VisibleFaces++;
	}

	// ------------------------------------------------------------------------------------------------------------
	public int locateEscapePlane(Vec3 vec) {
		
		if ( vec.y > getY1() ) {
			return Sector.FACE_CEILING;
		}

		if ( vec.y < getY0() ) {
			return Sector.FACE_FLOOR;
		}
		
		if ( getZ1() < vec.z ) {
			return Sector.FACE_S;
		}

		if ( getZ0() > vec.z ) {
			return Sector.FACE_N;
		}

		if ( getX1() < vec.x ) {
			return Sector.FACE_E;
		}

		if ( getX0() > vec.x ) {
			return Sector.FACE_W;
		}

		return Sector.INSIDE;
	}

	// ------------------------------------------------------------------------------------------------------------

	public void reset() {
		visited = false;
		// for (int c = 0; c < 6; c++)
		// if (iCache[c] != null && iColor[c] != null)
		// iCache[c].getVertexBuffer().setDefaultColor(getARGBColor(c));
	}

	public void lit() {
		// //Android
		// float Candelas = candelas / 255.0f;
		// for (int c = 0; c < 6; c++)
		// if (this.iFaces[c] != null)
		// this.iFaces[c].setOffset(Candelas);
		// //MIDP
		// int color;
		//
		// if (candelas>=255)
		// candelas=255;
		//
		// float _candelas=candelas;
		// _candelas/=128.0f;
		//
		// for (int c=0;c<6;c++)
		// {
		// if (iColor[c] == null)
		// continue;
		//
		// color=iCache[c].getVertexBuffer().getDefaultColor();
		// color=getARGBColor((int)(iColor[c].r*_candelas),(int)(iColor[c].g*_candelas),(int)(iColor[c].b*_candelas));
		// iCache[c].getVertexBuffer().setDefaultColor(color);
		// }

	}

	public void setVisible(boolean v) {
		// for (int c = 0; c < 6; c++) {
		// if (iCache[c] != null) {
		// iCache[c].setRenderingEnable(v);
		// }
		// }
	}
	// ------------------------------------------------------------------------------------------------------------
}
